/*     */ package com.zimbra.cs.dav.client;
/*     */ 
/*     */ import com.zimbra.common.util.Log;
/*     */ import com.zimbra.common.util.ZimbraLog;
/*     */ import com.zimbra.cs.dav.DavElements;
/*     */ import java.util.Collection;
/*     */ import java.util.Collections;
/*     */ import java.util.HashMap;
/*     */ import org.dom4j.Element;
/*     */ import org.dom4j.QName;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class DavObject
/*     */ {
/*     */   private String mHref;
/*     */   private HashMap<Integer, Element> mProps;
/*     */   
/*     */   public DavObject(Element objElem)
/*     */   {
/*  32 */     this.mProps = new HashMap();
/*  33 */     if (!objElem.getQName().equals(DavElements.E_RESPONSE))
/*  34 */       return;
/*  35 */     Element href = objElem.element(DavElements.E_HREF);
/*  36 */     if (href != null)
/*  37 */       this.mHref = href.getText();
/*  38 */     for (Object obj : objElem.elements(DavElements.E_PROPSTAT)) {
/*  39 */       Element propStat = (Element)obj;
/*  40 */       Integer status = null;
/*  41 */       Element statusElem = propStat.element(DavElements.E_STATUS);
/*  42 */       if (statusElem != null)
/*  43 */         status = Integer.valueOf(parseStatusCode(statusElem.getText()));
/*  44 */       this.mProps.put(status, propStat.element(DavElements.E_PROP));
/*     */     }
/*     */   }
/*     */   
/*     */   public String getHref() {
/*  49 */     return this.mHref;
/*     */   }
/*     */   
/*     */   private int parseStatusCode(String str) {
/*  53 */     int status = 400;
/*  54 */     String[] tokens = str.split(" ");
/*     */     try {
/*  56 */       if (tokens.length > 2)
/*  57 */         status = Integer.parseInt(tokens[1]);
/*     */     } catch (NumberFormatException e) {
/*  59 */       ZimbraLog.dav.warn("can't parse status code: " + str, e);
/*     */     }
/*  61 */     return status;
/*     */   }
/*     */   
/*     */   public Element getProperty(QName prop) {
/*  65 */     Element p = (Element)this.mProps.get(Integer.valueOf(200));
/*  66 */     if (p == null)
/*  67 */       return null;
/*  68 */     return p.element(prop);
/*     */   }
/*     */   
/*     */   public String getPropertyText(QName prop) {
/*  72 */     Element e = getProperty(prop);
/*  73 */     if (e != null)
/*  74 */       return e.getText();
/*  75 */     return null;
/*     */   }
/*     */   
/*     */   public long getPropertyLong(QName prop) {
/*  79 */     String val = getPropertyText(prop);
/*  80 */     if (val != null) {
/*     */       try {
/*  82 */         return Long.parseLong(val);
/*     */       }
/*     */       catch (NumberFormatException e) {}
/*     */     }
/*     */     
/*  87 */     return -1L;
/*     */   }
/*     */   
/*     */   public Collection<Element> getProperties(int code) {
/*  91 */     Element prop = (Element)this.mProps.get(Integer.valueOf(code));
/*  92 */     if (prop == null) {
/*  93 */       return Collections.emptyList();
/*     */     }
/*  95 */     Collection<Element> ret = prop.elements();
/*  96 */     return ret;
/*     */   }
/*     */   
/*     */   public boolean isResourceType(QName prop) {
/* 100 */     Element rtype = getProperty(DavElements.E_RESOURCETYPE);
/* 101 */     if (rtype == null)
/* 102 */       return false;
/* 103 */     return rtype.element(prop) != null;
/*     */   }
/*     */   
/*     */   public boolean isFolder() {
/* 107 */     return isResourceType(DavElements.E_COLLECTION);
/*     */   }
/*     */   
/*     */   public boolean isCalendarFolder() {
/* 111 */     return isResourceType(DavElements.E_CALENDAR);
/*     */   }
/*     */   
/*     */   public String getDisplayName() {
/* 115 */     return getPropertyText(DavElements.E_DISPLAYNAME);
/*     */   }
/*     */   
/*     */   public String getEtag() {
/* 119 */     return getPropertyText(DavElements.E_GETETAG);
/*     */   }
/*     */   
/*     */   public long getContentLength() {
/* 123 */     return getPropertyLong(DavElements.E_GETCONTENTLENGTH);
/*     */   }
/*     */   
/*     */   public String getContentLanguage() {
/* 127 */     return getPropertyText(DavElements.E_GETCONTENTLANGUAGE);
/*     */   }
/*     */   
/*     */   public String getContentType() {
/* 131 */     return getPropertyText(DavElements.E_GETCONTENTTYPE);
/*     */   }
/*     */   
/*     */   public String getCreationDate()
/*     */   {
/* 136 */     return getPropertyText(DavElements.E_GETCREATIONDATE);
/*     */   }
/*     */   
/*     */   public String getLastModifiedDate()
/*     */   {
/* 141 */     return getPropertyText(DavElements.E_GETLASTMODIFIED);
/*     */   }
/*     */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/cs/dav/client/DavObject.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */